#ifndef USER_DEVICE_H
#define USER_DEVICE_H

#include "user_global.h"

extern UU16 system_tick;

/////////////////////////////////////////////////////////////
// 时间计数
#define TIM7_PRESCAL                          120
#define TIM7_SYSCLK                           120000000UL

#define US_TO_TICK(us)                       ((ulong)((us) * 1e-6 * TIM7_SYSCLK/TIM7_PRESCAL))
#define US_TO_TICK_UL(us)                     US_TO_TICK(us)
#define ONE_MS                                US_TO_TICK(1000)                  // 1ms
#define TWO_MS                                US_TO_TICK(2000)                  // 1ms
#define FIVE_MS                               US_TO_TICK(5000)                  // 5ms
#define TEN_MS                                US_TO_TICK(10000)                 // 10ms
#define TWENTY_MS                             US_TO_TICK(20000)                 // 20ms
//#define FIVE_S                              US_TO_TICK(50000)                 // 5s
#define TICK_TO_US(tick)                      ((ulong)((tick)*(TIM7_PRESCAL * 1e6 / TIM7_SYSCLK)))
#define MS_TO_TICK_HIGH(ms)                   ((ushort)(US_TO_TICK_UL((ms) * 1e3)/65536))

ushort SystemTickLow(void);                         // 系统时钟低16位, X0.5us
ushort SystemTickHigh(void);                        // 系统时钟高16位, X32.768ms
ulong SystemTick(void);                             // 系统时钟, X0.5us
void Delay_Tick(ushort tick);
void Delay_Tick_Loop(ulong tick);
#define Delay_us(n)                         Delay_Tick(US_TO_TICK(n))
void Delay_ms(uint32_t count);



#endif // CONFIG_H
